#ifndef LOGGER_H_
#define LOGGER_H_

#include <string>
#include <boost/shared_ptr.hpp>

/// Central logging mechanism.
class Logger {
    boost::shared_ptr<struct LoggerImpl> pimpl_;
    static Logger* instance_;

public:
    virtual ~Logger();

    static Logger* instance();
    void error(const std::string&, const int& verbosity) const;
    void warning(const std::string&, const int& verbosity) const;
    void message(const std::string&, const int& verbosity) const;

    int level() const;
    void level(const int&);

private:
    Logger();
    Logger(const Logger&);
    Logger& operator=(const Logger&);
};

#endif
